package com.IO;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class TestFileOutStream {
    public static void main(String[] args) throws IOException {
        //===========构造方法============
        /*
        创建输出流对象的时候，
        系统会自动去对应位置创建对应文件，
        如果已经有这个文件，会清空这个文件的数据。
        */
        //根据File对象为参数创建FileOutStream类
        File f1 = new File("E:\\testFile\\testFileOut.txt");
        FileOutputStream fos  = new FileOutputStream(f1);

        //根据名称字符串为参数创建FileOutStream类
        FileOutputStream fos2 = new FileOutputStream("E:\\testFile\\a.txt");

        //===========写出字节流的方法(重载)=========
        // int b  Ascii码转字节
        fos.write(97);//a
        fos.write(98);//b
        fos.write(99);//c

        //字符串->字节数组
        byte[] b = "hello my friends".getBytes();
        //byte[] b 字节数组
        fos.write(b);
        //字节数组,指定片段
        fos.write(b,6,10);


        //关闭资源
        fos.close();
        /*
        * testFileOut.txt:
        * abchello my friendsmy friends
        * */

        //============实现数据追加续写、换行===========
        /*
          由于使用之前的构造方法,创建FileOutStream类总会清除原始数据
          利用以下构造方法实现追加(true 追加)
          FileOutputStream(File file, boolean append)
          FileOutputStream(String name, boolean append)
          Windows换行则是 \n,\r
        */

        FileOutputStream fos3 =new FileOutputStream(f1,true);
        byte[] b2 = "\n我的前面应该有字节".getBytes();
        fos3.write(b2);
        fos3.close();
    }
}

    